#ifndef FORMATIONBODY_H
#define FORMATIONBODY_H


#include "FormationSlot.h"

#include "FormationState.h"

#include <string>
#include <vector>
using namespace std;


class FormationBody {

private :
    FormationSlot *leaderSpot;
    vector<FormationSlot*> *spots;
    FormationState state;

public:
    FormationBody(FormationState state);
    ~FormationBody();
    FormationBody(FormationBody& fb);
    FormationBody& operator=(FormationBody& fb);

    void clear();
    void addSpot(FormationSlot* spot);
    vector<FormationSlot*> getSlots();
    FormationSlot& getSlotAt(int index);
    void scale(int spotCount);
    virtual void createSpot(int spotIndex, int spotCount) = 0;
    void setGlobalPosition(double x, double y);
    Point2D getGlobalPosition() ;
    void setGlobalOrientation(double x, double y);
    virtual FormationState getState();
};

#endif // FORMATIONBODY_H
